C语言单元测试与调试技巧精讲

📚 共计 30 章节
01
单元测试基础
什么是单元测试 · 为什么需要 · 与集成测试的区别
概念入门
02
测试框架入门
CUnit框架介绍 · 安装配置 · 第一个测试用例
CUnit环境
03
断言的艺术
CUnit常用断言宏 · 断言失败处理 · 自定义断言
断言
04
测试套件管理
创建套件 · 注册用例 · 初始化与清理
套件组织
05
测试夹具
什么是夹具 · setUp/tearDown · 复用技巧
夹具复用
06
参数化测试
数据驱动 · 测试用例生成 · 批量测试技巧
参数化数据驱动
07
模拟与桩函数
为什么需要模拟 · 手写桩函数 · 链接时替换
桩函数模拟
08
CMock入门
自动生成模拟 · 配置与使用 · 常见陷阱
CMock自动
09
代码覆盖率
gcov工具 · 覆盖率类型 · 报告生成
gcov覆盖率
10
LCOV增强报告
安装LCOV · HTML报告 · 解读报告
LCOV可视化
11
静态测试
PC-Lint & Cppcheck · 静态分析规则 · 误报处理
静态分析Lint
12
动态内存检测
Valgrind入门 · 内存泄漏 · 越界访问
Valgrind内存
13
AddressSanitizer
ASan原理 · 编译选项 · 与Valgrind对比
ASanSanitizer
14
单元测试与Makefile
集成到构建系统 · 自动化测试流程
Makefile自动化
15
持续集成中的测试
Jenkins配置 · GitLab CI · 结果可视化
CIJenkins
16
测试驱动开发
TDD流程 · 红绿重构 · 实战案例
TDD红绿
17
调试基础
GDB入门 · 断点设置 · 单步执行
GDB调试
18
GDB高级技巧
条件断点 · 观察点 · 回溯调用栈
GDB进阶
19
Core Dump分析
生成core文件 · 分析崩溃 · 定位段错误
Core崩溃
20
日志调试
日志级别设计 · 文件分析 · printf利与弊
日志printf
21
断言调试
运行时断言 · 静态断言 · 错误处理
断言static_assert
22
内存调试
内存池设计 · 越界检测 · 野指针追踪
内存池野指针
23
多线程调试
GDB多线程 · 死锁检测 · 竞态分析
多线程死锁
24
性能调试
perf工具 · 热点函数 · 性能瓶颈
perf性能
25
嵌入式调试
交叉调试 · JTAG/SWD · 裸机技巧
嵌入式JTAG
26
回归测试
自动化回归 · 用例维护 · 策略
回归维护
27
测试文档
测试计划 · 报告模板 · 文档自动化
文档模板
28
代码审查与测试
审查清单 · 覆盖率审查 · 常见缺陷
审查代码质量
29
实战项目一
命令行工具测试 · 完整套件 · 覆盖率达标
实战命令行
30
实战项目二
嵌入式模块测试 · 模拟硬件 · 集成测试
实战嵌入式